﻿using FluentNHibernate.Mapping;
using Sebrae.Academico.Trilhas.Dominio.Classes;
using System;

namespace Sebrae.Academico.Trilhas.BM.Mapeamentos
{
    public sealed class UsuarioMap : ClassMap<Usuario>
    {
        /// <summary>
        /// Construtor.
        /// </summary>
        public UsuarioMap()
        {
            Table("TB_USUARIO");
            LazyLoad();

            Id(x => x.ID).GeneratedBy.Identity().Column("ID_USUARIO");
            References(x => x.UF).Column("ID_UF");
            References(x => x.NivelOcupacional).Column("ID_NIVELOCUPACIONAL");
            Map(x => x.Nome).Column("NOME").Not.Nullable();
            Map(x => x.TipoDocumento).Column("TIPODOCUMENTO");
            Map(x => x.MiniCurriculo).Column("MINICURRICULO");
            Map(x => x.NumeroIdentidade).Column("NUMIDENTIDADE");
            Map(x => x.OrgaoEmissor).Column("ORGAOEMISSOR");
            Map(x => x.DataExpedicaoIdentidade).Column("DATAEXPEDICAOIDENTIDADE");
            Map(x => x.DataNascimento).Column("DATANASCIMENTO");
            Map(x => x.Sexo).Column("SEXO");
            Map(x => x.Nacionalidade).Column("NACIONALIDADE");
            Map(x => x.EstadoCivil).Column("ESTADOCIVIL");
            Map(x => x.NomeMae).Column("NOMEMAE");
            Map(x => x.NomePai).Column("NOMEPAI");
            Map(x => x.Matricula).Column("MATRICULA");
            Map(x => x.Email).Column("EMAIL");
            Map(x => x.CPF).Column("CPF");
            Map(x => x.DataAdmissao).Column("DATAADMISSAO");
            Map(x => x.Situacao).Column("SITUACAO");
            Map(x => x.DataAtualizacao).Column("DATAATUALIZACAO");
            Map(x => x.LoginLms).Column("LOGINLMS");
            Map(x => x.SenhaLms).Column("SENHALMS");
            Map(x => x.Endereco).Column("ENDERECO");
            Map(x => x.Bairro).Column("BAIRRO");
            Map(x => x.Cep).Column("CEP");
            Map(x => x.Estado).Column("ESTADO");
            Map(x => x.TelResidencial).Column("TELRESIDENCIAL");
            Map(x => x.TelCelular).Column("TELCELULAR");
            Map(x => x.Cidade).Column("CIDADE");
            Map(x => x.Instituicao).Column("INSTITUICAO");
            Map(x => x.Unidade).Column("UNIDADE");
            Map(x => x.Pais).Column("PAIS");
            Map(x => x.Complemento).Column("COMPLEMENTO");
            Map(x => x.MaterialDidatico).Column("MATERIALDIDATICO");
            Map(x => x.Cep2).Column("CEP2");
            Map(x => x.Endereco2).Column("ENDERECO2");
            Map(x => x.Pais2).Column("PAIS2");
            Map(x => x.Complemento2).Column("COMPLEMENTO2");
            Map(x => x.Bairro2).Column("BAIRRO2");
            Map(x => x.Cidade2).Column("CIDADE2");
            Map(x => x.Estado2).Column("ESTADO2");
            Map(x => x.Escolaridade).Column("ESCOLARIDADE");
            Map(x => x.CodigoCampoConhecimento).Column("CODCAMPOCONHECIMENTO");
            Map(x => x.TipoInstituicao).Column("TIPOINSTITUICAO");
            Map(x => x.AnoConclusao).Column("ANOCONCLUSAO");
            Map(x => x.Naturalidade).Column("NATURALIDADE");
            Map(x => x.SenhaAd).Column("SENHAAD");
            Map(x => x.LoginAd).Column("LOGINAD");
            Map(x => x.PermissaoAcesso).Column("PERMISSAOACESSO");

            
            //Id(x => x.ID, "ID_USUARIO").GeneratedBy.Identity();
            //Map(x => x.Nome).Column("NOME").Length(100).Not.Nullable();
            //Map(x => x.TipoDocumento).Column("TIPODOCUMENTO").Length(50).Nullable();
            //Map(x => x.MiniCurriculo).Column("MINICURRICULO").Nullable();
            //Map(x => x.NumeroIdentidade).Column("NUMIDENTIDADE").Length(30).Nullable();
            //Map(x => x.OrgaoEmissor).Column("ORGAOEMISSOR").Length(20).Nullable();

            //Map(x => x.DataExpedicaoIdentidade).Column("DATAEXPEDICAOIDENTIDADE").CustomType<DateTime>()
            //  .Access.Property().CustomSqlType("DATETIME").Nullable();

            //Map(x => x.DataNascimento).Column("DATANASCIMENTO").CustomType<DateTime>()
            //  .Access.Property().CustomSqlType("DATETIME").Nullable();

            //Map(x => x.Sexo).Column("SEXO").Length(10).Nullable();

            //Map(x => x.Nacionalidade).Column("NACIONALIDADE").Length(30).Nullable();
            //Map(x => x.EstadoCivil).Column("ESTADOCIVIL").Length(15).Nullable();
            //Map(x => x.NomeMae).Column("NOMEMAE").Length(100).Nullable();
            //Map(x => x.NomePai).Column("NOMEPAI").Length(100).Nullable();
            //Map(x => x.Matricula).Column("MATRICULA").Length(20).Nullable();
            //Map(x => x.Email).Column("EMAIL").Length(50).Nullable();
            //Map(x => x.CPF).Column("CPF").Length(30).Nullable();

            //Map(x => x.DataAdmissao).Column("DATAADMISSAO").CustomType<DateTime>()
            //  .Access.Property().CustomSqlType("DATETIME").Nullable();

            //Map(x => x.Situacao).Column("SITUACAO").Length(50).Nullable();

            //Map(x => x.DataAtualizacao).Column("DATAATUALIZACAO").CustomType<DateTime>()
            //  .Access.Property().CustomSqlType("DATETIME").Nullable();

            //Map(x => x.LoginLms).Column("LOGINLMS").Length(30).Nullable();
            //Map(x => x.SenhaLms).Column("SENHALMS").Length(10).Nullable();
            //Map(x => x.Endereco).Column("ENDERECO").Length(200).Nullable();


            //Map(x => x.Bairro).Column("BAIRRO").Length(50).Nullable();
            //Map(x => x.Cep).Column("BAIRRO").Length(10).Nullable();
            //Map(x => x.Estado).Column("ESTADO").Length(2).Nullable();

            //Map(x => x.TelResidencial).Column("TELRESIDENCIAL").Length(20).Nullable();
            //Map(x => x.TelCelular).Column("TELCELULAR").Length(20).Nullable();
            //Map(x => x.Cidade).Column("CIDADE").Length(50).Nullable();
            //Map(x => x.Instituicao).Column("INSTITUICAO").Length(100).Nullable();
            //Map(x => x.Unidade).Column("UNIDADE").Length(60).Nullable();
            //Map(x => x.Pais).Column("PAIS").Length(2).Nullable();
            //Map(x => x.Complemento).Column("COMPLEMENTO").Length(50).Nullable();
            //Map(x => x.MaterialDidatico).Column("MATERIALDIDATICO").Length(50).Nullable();
            //Map(x => x.Cep2).Column("CEP2").Length(10).Nullable();
            //Map(x => x.Complemento2).Column("COMPLEMENTO2").Length(50).Nullable();
            //Map(x => x.Bairro2).Column("BAIRRO2").Length(50).Nullable();
            //Map(x => x.Cidade2).Column("CIDADE2").Length(50).Nullable();
            //Map(x => x.Estado2).Column("ESTADO2").Length(2).Nullable();
            //Map(x => x.Escolaridade).Column("ESCOLARIDADE").Length(20).Nullable();
            //Map(x => x.CodigoCampoConhecimento).Column("CODCAMPOCONHECIMENTO").Nullable();
            //Map(x => x.TipoInstituicao).Column("TIPOINSTITUICAO").Length(50).Nullable();
            //Map(x => x.AnoConclusao).Column("ANOCONCLUSAO").Length(4).Nullable();
            //Map(x => x.Naturalidade).Column("NATURALIDADE").Length(50).Nullable();
            //Map(x => x.SenhaAd).Column("SENHAAD").Length(10).Nullable();
            //Map(x => x.LoginAd).Column("LOGINAD").Length(30).Nullable();
            //Map(x => x.PermissaoAcesso).Column("PERMISSAOACESSO").Nullable();
           

            //References(x => x.UF).Column("ID_UF").Nullable().Cascade.None().LazyLoad();
            //References(x => x.NivelOcupacional).Column("ID_NIVELOCUPACIONAL").Nullable().Cascade.None().LazyLoad();

            //HasMany<UsuarioPerfil>(x => x.Trilhas).Cascade.None()
            // .AsBag().Inverse().KeyColumn("ID_USUARIO");


        }

    }
}
